<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Campaigns
 *
 * @author Admin
 */
class Back_Model_Campaigns extends Zend_Db_Table_Abstract 
{
    protected $_name = 'campaigns';
    
    /**
     * Выборка логина, тематики, стартового и текущего бюджета,
     * статуса всех рекламных кампаний
     * @return array 
     */
    public function getAllCampaigns() {
        $db = $this->getDefaultAdapter();
        $select = $db->select()
                     ->from(array('c' => 'campaigns'))
                     ->join(array('adv' => 'advertisers'),
                                  'c.id_advertiser = adv.id',
                            array('login' => 'adv.login'))
                     ->join(array('csc' => 'category_site_child'),
                                  'c.id_category = csc.id',
                            array('category' => 'csc.name'))
                     ->join(array('cb' => 'campaigns_budget'),
                                  'c.id = cb.id_campaign',
                            array('start' => 'cb.start_budget', 'current' => 'cb.current_budget'))
                     ->join(array('su' => 'status_users'),
                                  'c.id_status = su.id',
                            array('status' => 'su.name'));
        return $db->fetchAll($select);
    }
    
    /**
     * Выборка кол-ва всех кампаний
     * @return array 
     */
    public function getCountAllCampaigns() {
        $select = $this->select()
                       ->from($this->_name, array('count_campaigns' => 'COUNT(*)'));
        return $this->fetchRow($select);
    }
    
    /**
     * Подсчет кол-ва кампаний с указанным статусом
     * @param type $idStatus статус кампании
     * @return array 
     */
    public function getCountStatusCampaigns($idStatus) {
        $this->_name = 'campaigns';
        $select = $this->select()
                       ->from($this->_name, array('count' => 'COUNT(*)'))
                       ->where('id_status =?', intval($idStatus));
        return $this->fetchRow($select);
    }
    
    /**
     * Сумма транзакций всех кампаний
     * @return array 
     */
    public function getAllPaymentsAdvertisers() {
        $this->_name = 'transactions_advertisers';        
        $select = $this->select()
                       ->from($this->_name, array('payments' => 'sum(amount)'));
        return $this->fetchRow($select);
    }
    
    /**
     * Удаляет указанную рекламную кампанию
     * @param int $idCampaign - id рекламной кампании
     */
    public function deleteSelectCampaign($idCampaign) {
        $this->delete('id =' . intval($idCampaign));
    }
    
    /**
     * Изменение текущего статуса рекламной компании:
     * активна, блокирована, не подтверждена
     * @param int $idCampaign - id рекламной кампании
     * @param array $data - id статуса
     */
    public function changeCurrentStatus($idCampaign, $data) {
        $this->update($data, 'id =' . intval($idCampaign));
    }
    
    public function getCountAllAdvertisements() {
        $this->_name = 'advertisements';
        $select = $this->select()
                       ->from($this->_name, array('count' => 'COUNT(*)'));
        return $this->fetchRow($select);
    }
    
    public function getCountStatusAdvertisements($idStatus) {
        $this->_name = 'advertisements';
        $select = $this->select()
                       ->from($this->_name, array('count' => 'COUNT(*)'))
                       ->where('id_type_adver =?', intval($idStatus));
        return $this->fetchRow($select);
    }
}

?>
